﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ZQNB.Common.Models
{

    /// <summary>
    /// 用户应用程序（不是公共语言运行时）引发从 ApplicationException 类派生的自定义异常。
    /// ApplicationException 类区分应用程序定义的异常与系统定义的异常。 
    /// 最初要求自定义异常应该从 ApplicationException 类派生；
    /// 但是在实践中并未发现这样有很大意义。 有关更多信息，请参见处理异常的最佳做法。
    /// 处理异常的最佳做法：http://msdn.microsoft.com/zh-cn/library/seyhszts.aspx
    /// </summary>
    public class NbException : ApplicationException
    {
        private string _category;
        public virtual string Category
        {
            get
            {
                if (string.IsNullOrWhiteSpace(_category))
                {
                    Type t = this.GetType();
                    _category = t.Name;
                }
                return _category;
            }
        }

        public virtual int Weight
        {
            get { return 0; }
        }

        public NbException()
        {
        }

        public NbException(string message)
            : base(message)
        {
        }

        public NbException(string message, Exception inner)
            : base(message, inner)
        {
        }
    }

    public class NeedLogonException : NbException
    {
        public NeedLogonException()
            : base("需要登录才可以访问")
        {
        }

        public NeedLogonException(string message)
            : base(message)
        {
        }

        public NeedLogonException(string message, Exception inner)
            : base(message, inner)
        {
        }
    }

    public class NeedRoleException : NbException
    {
        public NeedRoleException()
            : base("需要特定角色才可以访问")
        {
        }

        public NeedRoleException(string message)
            : base(message)
        {
        }

        public NeedRoleException(string message, Exception inner)
            : base(message, inner)
        {
        }
    }
}
